package com.czm.art_light.constant;


/**
 * elasticsearch 相关常量
 */
public class EsConsts {

    /**
     * 精确匹配 .keyword
     */
    public static final String EXACT_MATCH_KEYWORD = ".keyword";

    /**
     * 自定义艺术作品评分脚本 自定义评分公式 喜欢量 * 0.4 + 下载量 * 0.3 + 分享量 * 0.2 + 点击量 * 0.1
     */
    public static final String CUSTOM_ART_WORKS_SCORE_SCRIPT = """
                doc['clickCount'].value * 0.1 +
                doc['downloadCount'].value * 0.3 +
                doc['shareCount'].value * 0.2 +
                doc['likeCount'].value * 0.4
            """;
    /**
     * 自定义艺术家评分脚本 总的艺术画作品数量 * 0.8
     */
    public static final String CUSTOM_ARTIST_SCORE_SCRIPT = """
                doc['totalArtworkCount'].value * 0.8
            """;

    private EsConsts() {
        throw new IllegalStateException(SystemConfigConsts.CONST_INSTANCE_EXCEPTION_MSG);
    }

    /**
     * 艺术作品索引
     */
    public static class ArtWorkIndex {

        private ArtWorkIndex() {
            throw new IllegalStateException(SystemConfigConsts.CONST_INSTANCE_EXCEPTION_MSG);
        }

        /**
         * 索引名
         */
        public static final String INDEX_NAME = "artworks";

        /**
         * id
         */
        public static final String FIELD_ID = "id";

        /**
         * 作品名称
         */
        public static final String FIELD_TITLE = "title";

        /**
         * 艺术家名字
         */
        public static final String FIELD_ARTIST_NAME = "artistName";


        /**
         * 作品主图小图
         */
        public static final String FIELD_PRIMARY_IMAGE_SMALL_URL = "primaryImageSmallUrl";

        /**
         * 作品总的点击量
         */
        public static final String FIELD_CLICK_COUNT = "clickCount";

        /**
         * 作品总的下载量
         */
        public static final String FIELD_DOWNLOAD_COUNT = "downloadCount";

        /**
         * 作品总的分享量
         */
        public static final String FIELD_SHARE_COUNT = "shareCount";

        /**
         * 作品总的喜欢量
         */
        public static final String FIELD_LIKE_COUNT = "likeCount";

        /**
         * 话题名称
         */
        public static final String FIELD_TOPIC_NAME = "topicName";

        /**
         * 类别名称
         */
        public static final String FIELD_CATEGORY_NAME = "categoryName";

        /**
         * 流派名称
         */
        public static final String FIELD_MOVEMENT_NAME = "movementName";

    }

    /**
     * 艺术家索引
     */
    public static class ArtistIndex {
        private ArtistIndex() {
            throw new IllegalStateException(SystemConfigConsts.CONST_INSTANCE_EXCEPTION_MSG);
        }

        /**
         * 索引名
         */
        public static final String INDEX_NAME = "artists";

        /**
         * id
         */
        public static final String FIELD_ID = "id";

        /**
         * 艺术家名字
         */
        public static final String FIELD_ARTIST_NAME = "artistName";

        /**
         * 艺术家照片的URL地址
         */
        public static final String FIELD_PHOTO_URL = "photoUrl";

        /**
         * 艺术家国籍
         */
        public static final String FIELD_NATIONALITY = "nationality";

        /**
         * 艺术家的出生和逝世年份(已经逝世的情况下)，格式为YYYY-YYYY
         */
        public static final String FIELD_BIRTH_DEATH_YEARS = "birthDeathYears";

        /**
         * 总的艺术画作品数量(不管其根据上面条件，如具体的艺术话题的ID、具体的作品类别的ID、具体的作品所属的流派的ID)
         */
        public static final String FIELD_TOTAL_ARTWORK_COUNT = "totalArtworkCount";

        /**
         * 艺术家的作品中所有的话题名字
         */
        public static final String FIELD_ALL_TOPIC_NAMES = "allTopicNames";

        /**
         * 艺术家的作品中所有的类别名字
         */
        public static final String FIELD_ALL_CATEGORY_NAMES = "allCategoryNames";

        /**
         * 艺术家的作品中所有的流派名字
         */
        public static final String FIELD_ALL_MOVEMENT_NAMES = "allMovementNames";
    }

    /**
     * 更新ES中艺术作品信息 请求字段DTO
     */
//    public static final class UpdateArtworkInfoReqDto {
//        private UpdateArtworkInfoReqDto() {
//            throw new IllegalStateException(SystemConfigConsts.CONST_INSTANCE_EXCEPTION_MSG);
//        }
//
//        /**
//         * 艺术作品 workId
//         */
//        private String WORK_ID = "workId";
//
//        /**
//         * 是否是更新文档全部字段信息 默认false
//         */
//        private String UPDATE_ALL_FIELDS = "updateAllFields";
//    }
}
